package com.beta.cat.utils.encrypt;

import org.apache.commons.codec.binary.Base64;
import org.apache.commons.lang3.StringUtils;

/**
 * Base64编/解码工具
 *
 * @author kevin_zhang
 * @date 28/11/2017
 */
public class Base64Util {

    /**
     * 加密|签名
     *
     * @param content 明文
     * @return 密文
     */
    public static String encrypt(String content) {
        return encrypt(content, null);
    }

    /**
     * 加密|签名
     *
     * @param content 明文
     * @param key     秘钥
     * @return 密文
     */
    public static String encrypt(String content, String key) {
        if (StringUtils.isNotBlank(key)) {
            content = content + key;
        }
        return new String(Base64.encodeBase64String(content.getBytes()));
    }

    /**
     * 验证签名
     *
     * @param content 需要签名的字符串
     * @param key     密钥
     * @param sign    签名结果
     * @return 签名结果
     */
    public static boolean verify(String content, String key, String sign) {
        String mySign = encrypt(content, key);
        return mySign.equals(sign);
    }

    /**
     * Base64解密
     *
     * @param content
     * @return
     */
    public static String decrypt(String content) {
        return new String(Base64.decodeBase64(content.getBytes()));
    }

    public static void main(String[] args) {
        String str = "ABC王明123abc+/";
        String sign;
        sign = encrypt(str, "123abc321");
        System.out.println(sign);
        System.out.println(decrypt(sign));
        System.out.println("--------------");
        System.out.println(verify(str, "123abc321", sign));
        System.out.println("--------------");
    }
}
